A Web service typified by a Web mail and a social network has become widespread in recent years. When a page is to be created in response to a request from a user, Web service inquires for various pieces of data used to create the page from a database. While it is preferred that the database quickly responds to an individual access, the load on the database increases as the number of users increases. The access to the database can be alleviated by using a dynamic random access memory (DRAM) faster than a hard disk drive (HDD) as a storage device to be used as a cache server which temporarily stores data in order to deal with a request for frequent and quick responses.
For example, such cache server is accessed in a data format called a key-value store (KVS) where an identifier “key” of data expressed by a character string having an arbitrary length is used to read/write a piece of data “value” having an arbitrary length. The KVS uses a hash table in which association between the key and the value is managed. The hash table is a technique of mapping an extensive namespace available for the key into an address space of an actual storage that is finite. Then, the throughput of a single server can be increased by implementing processing of the KVS as hardware and, by decreasing the number of servers. This makes it possible to save power consumption, an installation space, a cost of maintenance, and the like.
However, the technique of using the hash table narrows the space, which fundamentally causes a collision to occur. The collision means that different keys correspond to the same entry in the hash table. There is a read delay in the DRAM in which the hash table is stored, for example. Thus it is preferred that, even while certain query processing waits for read data after issuing a read request, a next query issue a data read request. When the same entry is accessed by the certain query and the next query, there occurs read/write contention causing data inconsistency.